MAX HELP MENU

FOR A BASIC INTRODUCTION TO THIS EDITOR, TYPE ESC TO EXIT THIS HELP,
CTL-X CTL-Z TO EXIT, CONFIRM WITH CTL-Y, AND TYPE (TO THE DOS PROMPT)
">ED TUTORIAL.TXT" WHICH WILL TEACH YOU THE MOST BASIC CONCEPTS.

	*** PRELIMINARY AND INCORRECT VERSION ***

You are looking at the topnode of MAX's helpsystem. To find the
help you need, always read the options,and choose one of them:

	1	What is the command to invoke a certain Function ?
	2	What does a certain command do ?
	3	What are the available text formatter command ?
	4	How is the keyboard defined ?
	5	Tell me more about MAX
	6	Differences MAX/EMACS [(C) MIT]

		Press a number from 1 to 5, or CTL-G to quit
$0300Subject3270Keystroke1000Textformat1210Keyboard1487Design0000EMACS


Functions by Subject

Functions can be roughly classified into five categories.
Would you like to get information on ...



	1	how to move the cursor ?
	2	how to kill and delete ?
	3	how to use advanced text change commands ?
	4	how to search ?
	5	what other functions are available ?

$0470Cursor Moving0610Erasing0940Text0B10Searching0CE0Others


Moving the Cursor

by Character:		CTL-B	...	Backward	(left)
			CTL-F	...	Forward		(right)
by Line:		CTL-N	...	Next		(down)
			CTL-P	...	Previous	(up)

by Word:		ESC-B	...	Backward
			ESC-F	...	Forward

by Screen:		CTL-V	...	Next
			ESC-V	...	Previous

by File:		ESC-<	...	To the Start
			ESC->	...	To the End

to the mark:		CTL-X CTL-X	and exchange cursor

to screencenter:	CTL-L		

$


Deleting and Killing

CTL-D		deletes the character on the cursor position.
BACKSPACE	deletes the character one before the cursor position.

----------------------------------------------------------------------------
Using CTL-Y will yank back the last killed text at the current cursor
position. All of the below functions take advantage of the yank buffer.
You can use those for moving, copying or deleting text. Note that only the
last object killed is saved in the yankback buffer, so be careful.

CTL-K	...	kills from the cursor to the end of the line.
		directly consecutive CTL-Ks are adding to,
		instead of replacing the yank-back buffer.
CTL-W	...	kills the entire region, everything between mark and cursor.

ESC-BACKSPACE	kills the last word.
ESC-D	...	kills the next word.

$


Changing Text

CTL-I	...	inserts a TAB.
CTL-Q	...	inserts literal, useful for inserting control characters.
CTL-O	...	opens a line below the cursor.

CTL-T	...	exchanges 2 characters ( e.g. cs->sc ).
ESC-T	...	exchanges 2 words ( e.g. am I -> I am ).

ESC-U	...	uppercases the last word.
ESC-C	...	capitalizes the last word.

ESC-Q	...	formats the paragraph ( in preparation ).
ESC-X Q	...	formats the region ( in preparation ).

$


Searching

Normal searches are incremental. You can add or delete characters, or
switch directions during the search. CTL-J matches any character (
wildcard ). CTL-Q will quote a character, and thereby allow you to search
for control characters. Use any command to abort the search ( e.g. CTL-A ).


CTL-S	incremental search		( forward )
CTL-R	reverse incremental search	( backwards )


ESC-X S	search and replace
ESC-X Q	query search and replace


$


Other Commands
	##############################################
	######	CTL-X CTL-Z	exits to dos.   ######
	######					######
	######	CTL-_		gives the help. ######
	##############################################
CTL-X CTL-S	saves the buffer under the old name.
CTL-X CTL-W	writes the buffer under a new name.
CTL-X CTL-V	visits another file in this buffer.
CTL-X D		Directory

CTL-X B		selects another buffer in the active window.
CTL-X CTL-B	toggles two buffers in the active window.

CTL-X CTL-O	toggles the active window.
CTL-X 1		toggles the number of windows on the screen.
CTL-X 2		puts 2 windows to the screen and switches to the other.
CTL-X 3		puts 2 windows to the screen, but remains in the same.
CTL-X 4		as above two commands, not of real use, except for EMACS comp.
$


Text Formatting

The text formatter is a SCRIBE [trademark of UNILOGIC] clone. It is both a
sub- and a superset of the original. Most noticeable, fonts are missing,
while a lot of useful commands for the microcomputer world have been added.
For more information, refer to the manual. Here is a quick reference of the
features:


	1)	available devices
	2)	available commands
	3)	available environments
	4)	available typefaces
	5)	examples
$0000Devices0000Commands0000Environments0000Typefaces0000Examples


Keyboard

MAX allows both traditional EMACS commands *and* menus. The menus appear on
the bottom of the page ( corrosponding to the function keys ), and allow
easy command entry for the novice. F10 in the top menu allows to toggle
the display.

The numeric keypad allows you to recall the functions described. In addition,
CTL-PgUp scrolls the display up, CTL-PgDn down.

                                                                           
                                                                           
                                                                           
$


Design

This node opens the door to interesting information about MAX/SCR, their
authors and policies. We hope you are a legal user, enjoying the
environment we provided you with. Have you sent us your name yet ? We are
gladly accepting contributions to sponsor further updates and information.


	1	How does one add a new node to this help tree ?
	2	Who are the people who created the package ?
	3	What is their update policy ?
	4	What are the known bugs and how can I avoid them ?
	5	What improvements are planned ?
	6	How can I get a special adaptation of MAX ?
	7	What is our policy on Copyright Violations ?

$1750Nodeadd2140Creation2720Update2870Bugs29F0Limits2E90Adapt3100Copyright


Adding Nodes
	Note:	Extending the help menu is your own risk.
		Follow the instructions to avoid damage.

The help menu is semantically a graph, whose description follows strict
syntactic rules. Option 1 describes the help menu language using a BNF
notation, option 2 offers some suggestions. Here is a free-style
description of the language:

A node starts with two nuls. then the nodename follows, terminated by a
NUL. then the help text starts, terminated with a STR. Finally the option
field begins. An option consists of the diskaddress, given as a hex number
in the range 0000 to FFFF ( must be 4 digits ! ), and a name. It ends with
one NUL, after which another option may follow. Two consecutive nuls
signal the end of the current and the start of the next help node. The
help menu ends with three consecutive NULs. Note that names do not have
any semantic meaning, since the disk address chooses the correct node when
the user selects an option. $1B40BNF1DD0Suggestions


BNF Description

Here is a BNF description of the help language:

<help menu>::=	<nul> <help> <nul>
<help>::=	<node> | <node> <help>
<node>::=	<newpage><nodename><nul><helptext><str><optionlist><NUL>
<optionlist>::=	<option> | <option> <optionlist> | e
<option>::=	<address> <optionname> <nul>
<nul>::=	^@
<nodename>::=	[any character but nul]
<helptext>::=	[any character but str]
<address>::=	<hexdigit> <hexdigit> <hexdigit> <hexdigit>
<optionname>::=	[any character but nul]
<hexdigit>::=	0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F
<newpage>::=	^L

e.g. ^L Name ^@ Text <STR> 0000Option1 ^@0000Option2 ^@^@

$


Suggestions

Extending the help menu is trivial: you just give a name, text and options.
The only problem is finding the disk address of options. I have provided
two functions that will support the addition of nodes: C-X L will tell you
on which byte the cursor is, C-X _ will create a symbol listing of a valid
help file in the current buffer and write it to the other buffer. Then one
has to go through the file and exchange the 0000 addresses with the actual
addresses. Note that if the help file is not valid ( e.g. a NUL is missing
after a nodename ), this function will crash the system.

At one point I will write a simple utility that will build the symbol table
for you and insert it automatically to a copy, a dump "help environment"
command. Wait for the next edition, or write it yourself, and let me know
that I don't have to write it anymore.
$


Creation

MAX is a clone of EMACS, a public domain, state-of-the-art minicomputer
editor. MAX is written completely in 8086 assembly language, resulting in
drastically improved speed and size, the latter promising a proliferating
number of functions for the serious user ( e.g. in-editor formatters,
synatx checkers etc ). MAX is possibly the fastest and most compact
multi-purpose editor available.

MAX uses uses only standard ASCII characters, and standard EMACS keystroke
sequences (but allows the insertion of control characters). This means
maximum transparency and interchangeability among different programs, as
well as different computers. A user can easily switch to at least 10 other
editors on 20 other computers, without any additional training.

If you want to know who we are, choose option 1.
$2490Author


Authors

We are two just graduated undergrad Columbia University students. It took
us about a year to develop the first version of MAX/TS. At the same time,
we are heavily involved in analyses of learning chess programs, and some
expert systems. The development systems were a VICTOR-9000 with
256k/2*600k disks, and a WANG with 256K/2*320K disks.

We welcome any comments, inquiries, suggestions, remarks. You can contact
us under the following addresses:

Ivo Welch,				Jens Christensen
East Campus 1206,			CS Department ( CU )
New York, N.Y. 10027,			New York, N.Y. 10027
UI.IVO%CU20B@COLUMBIA-20		J-CHRISTENSEN@COLUMBIA-20.ARPA
       
$


Update Policies

We will try to make updates available on a regular basis. Those users who
contribute to updates will be the first to receive the updates, always free.

The cost for our efforts ( shipping, duplication, diskette etc. ) is
minimum  15.00.	Only major updates will cost more than our own costs.


$


Known Bugs

Fatal Bugs Known:	C-X _ will build a symboltable of a help file of the
			active buffer, and place it in the other buffer. If
			there is a ^L that is not followed by a ^@ within
			50 bytes, or so, a crash will result. SO KNOW WHAT
			YOU ARE DOING IF YOU USE THIS FUNCTION.

Some minor screen display bugs, and editing bugs ( e.g. at ESC-Q ).

$


Limitations 
There are essentially three problems:

Buffer Size:	Each buffer can only be 64K long. We take advantage of the
		8088's full capabilities, and therefore decided to limit
		edit size. This should not be a problem, since there is
		no program that can handle longer files in acceptable time.
		Use separate compilation/formatting etc if desired.

Static Buffers:	Buffers are assigned in the beginning of a session, and will
		not change either in number or size. Memory being so cheap
		now, we feel that this is a minor detail, but we will in
		future editions use dynamic buffers to allow an infinite
		number of buffers.
Abundance of:	We did not have time to put in more functions than those you
Functions:	see now. However, the size of the editor allow us to add a
		virtually unlimited number of functions, so expect to see
		many more. Wait for language syntax checkers, and formatters.
$


Planned Improvements

	Auto Wrap Mode
	Justify Paragraphs
	Dynamic Buffers
	Formatters/Syntax Checkers for BASIC, FORTRAN, TEXT, PASCAL etc.
	Intelligent Tabbing
	Find File
	Push to DOS

Suggestions and Improvements are welcome.
$


Special Adaptations

The following are possible adaptations:

Hebrew-English:	allows concurrent editing of Hebrew / English files.
University:	with a special price.
Multi-Ling:	allows concurrent editing of all major Western languages.
National:	allows national keybaord and screen layouts.
Mathematical:	allows insertion of mathematical characters.
Arab:		allows arabic editing.
Kyrillic:	allows kyrillic editing.

If you want your own special adaptation, you may either ask us for the source
code (which reliable institutions can obtain for free), or you may ask us to
do it for you, which we will do for a reasonable fee.
$


Copyright Policies

MAX/TS are registered copyright (C) of Ivo Welch, 1984, and Jens Christensen.
All rights reserved.

We will sue for substantial damage in case our copyright is violated.
Authorized changes to our program are our sole property as well. Please
keep to the contract.(mss) 


		DON'T GIVE CRIME A CHANCE !
$


Keystroke Meanings

This node allows you to find out what a specific keystroke sequence does.
Commands are classified in the following categories:

	1	CTL-
	2	CTL-X
	3	ESC-
	4	ESC-X
	5	ESC-n or CTL-U n   [arguments, n is any number]
$3390CTL-3600CTL-X3870ESC-39D0ESC-X3A50ARG


CTL-_ Commands
To issue any of the following commands, hold down the <CTL> key, while
pressing the character after the "-"

ctl-a	to linestart			ctl-p	to previous line
ctl-b	backwards			ctl-q	insert literal
ctl-d	delete character		ctl-r	reverse search
ctl-e	to lineend			ctl-s	search
ctl-f	forwards			ctl-t	exchange characters
ctl-h	help				ctl-u	give an argument (see karg)
ctl-k	kill to lineend			ctl-v	to next page
ctl-l	center screen			ctl-w	delete last word
ctl-n	to next line			ctl-x	see next node
ctl-o	open a new line			ctl-y	yank back last kill
			ctl-_	HELP
$3600CTL-X3A50ARG


CTL-X _ Commands

CTL-X CTL-B	toggle buffer in window.
CTL-X CTL-F	find a file on the disk ( in implementation ).
CTL-X CTL-O	switch window.
CTL-X CTL-S	save buffer to disk.
CTL-X CTL-V	visit another file from disk ( load it into buffer ).
CTL-X CTL-W	write buffer under new name to disk.
CTL-X CTL-X	exchange mark and cursor.
CTL-X CTL-Z	exit to MSDOS. Confirm that all your work has been saved.
CTL-X (		define a keyboard macro.
CTL-X )		signal end of definition.
CTL-X D		directory
CTL-X E		invoke the keyboard macro.
CTL-X 1 to 4	toggle number of windows on the screen.
CTL-X B		select buffer.
CTL-X O		switch windows.

$

ESC-_ Commands

	esc-b		go one word backward
	esc-c		capitalize last word
	esc-d		delete word
	esc-f		go one word forward
	esc-l		toggle last line
	esc-u		uppercase last word
	esc-v		go to previous page
	esc-x		see next node
	esc-<		go to start of file
	esc->		go to end of file

	esc-del		rubkill word

$39D0ESC-X Commands


ESC-X _ Commands


ESC-X S	 ...	search and replace
ESC-X Q	 ...	query search and replace
ESC-X W	 ...	toggle wrap mode

$

Arguments to Commands

CTL-u n [fn]	or	ESC-n [fn]

Functions can accept arguments. Often this means merely "repeat this function
n times." For instance, "CTL-U 234 CTL-N" will advance 234 lines. In some
cases, an argument has a special meaning: ESC-3 CTL-L will redraw the screen
with the cursor on line 3 instead of the default line.

$